/*
给定一个整数 (32 位有符号整数)，请编写一个函数来判断它是否是 4 的幂次方。

示例 1:

输入: 16
输出: true
示例 2:

输入: 5
输出: false
进阶：
你能不使用循环或者递归来完成本题吗？

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/power-of-four
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
*/
class Solution {
public:
    bool isPowerOfFour(int num) {
        if(num<0){
            return false;
        }
        bitset<32> bn(num);
        if(bn.count()!=1){
            return false;
        }
        bitset<32> mask("01010101010101010101010101010101");
        //cout<<mask.to_string()<<endl;
        //cout<<bn.to_string()<<endl;
        if((mask&bn).count()==1){
            return true;
        }
        return false;
    }
};


// 256 128 64 32 16 8 4 2 1 
//   0   0  0  0  0 0 0 0 0